package com.hckjsec.common.dto;

import com.alibaba.fastjson.JSON;
import com.hckjsec.common.constant.HttpStatus;
import com.hckjsec.common.utils.AESUtil;
import com.hckjsec.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;

import java.io.Serializable;
import java.util.HashMap;

@Slf4j
public class Result extends HashMap<String, Object> implements  Serializable{
	private static final long serialVersionUID = 1L;

	/** 状态码 */
	public static final String CODE_TAG = "code";

	/** 返回内容 */
	public static final String MSG_TAG = "msg";

	/** 数据对象 */
	public static final String DATA_TAG = "data";

	/**
	 * 初始化一个新创建的 Result 对象，使其表示一个空消息。
	 */
	public Result()
	{
	}

	/**
	 * 初始化一个新创建的 Result 对象
	 *
	 * @param code 状态码
	 * @param msg 返回内容
	 */
	public Result(int code, String msg)
	{
		super.put(CODE_TAG, code);
		super.put(MSG_TAG, msg);
	}

	/**
	 * 初始化一个新创建的 Result 对象
	 *
	 * @param code 状态码
	 * @param msg 返回内容
	 * @param data 数据对象
	 */
	public Result(int code, String msg, Object data)
	{
		super.put(CODE_TAG, code);
		super.put(MSG_TAG, msg);
		if (StringUtils.isNotNull(data))
		{
			log.info("当前请求返回加密对象原始参数化json：{}", JSON.toJSONString(data));
			String s = null;
			try {
				s = AESUtil.Encrypt(JSON.toJSONString(data),"9c7s8gr2bg3ry02i");
			} catch (Exception e) {
				e.printStackTrace();
			}
			super.put(DATA_TAG, s);
		}
	}

	/**
	 * 返回成功消息
	 *
	 * @return 成功消息
	 */
	public static Result success()
	{
		return Result.success("操作成功");
	}

	/**
	 * 返回成功数据
	 *
	 * @return 成功消息
	 */
	public static Result success(Object data)
	{
		return Result.success("操作成功", data);
	}

	/**
	 * 返回成功消息
	 *
	 * @param msg 返回内容
	 * @return 成功消息
	 */
	public static Result success(String msg)
	{
		return Result.success(msg, null);
	}

	/**
	 * 返回成功消息
	 *
	 * @param msg 返回内容
	 * @param data 数据对象
	 * @return 成功消息
	 */
	public static Result success(String msg, Object data)
	{
		return new Result(HttpStatus.SUCCESS, msg, data);
	}

	/**
	 * 返回错误消息
	 *
	 * @return
	 */
	public static Result error()
	{
		return Result.error("操作失败");
	}

	/**
	 * 返回错误消息
	 *
	 * @param msg 返回内容
	 * @return 警告消息
	 */
	public static Result error(String msg)
	{
		return Result.error(msg, null);
	}

	/**
	 * 返回错误消息
	 *
	 * @param msg 返回内容
	 * @param data 数据对象
	 * @return 警告消息
	 */
	public static Result error(String msg, Object data)
	{
		return new Result(HttpStatus.ERROR, msg, data);
	}

	/**
	 * 返回错误消息
	 *
	 * @param code 状态码
	 * @param msg 返回内容
	 * @return 警告消息
	 */
	public static Result error(int code, String msg)
	{
		return new Result(code, msg, null);
	}



	/******************微信端返回的信息**********************/
	/**
	 * 传入参数不合法
	 */
	public static Result cloud_601()
	{
		return new Result(HttpStatus.HTTP_601, "请求错误，无法访问资源");
	}
	/**
	 * 传入参数为空
	 */
	public static Result cloud_602(String msg)
	{
		return new Result(HttpStatus.HTTP_602, msg);
	}
}